package com.company.creational.singleton_pattern.lazy;

/**
 * @ClassName LazySingleton2
 * @Author tiezheng.han
 * @Date 2020/8/28 9:42
 **/
public class LazySingleton3 {

    private volatile static LazySingleton3 instance = null;

    private LazySingleton3(){}

    /**
     * 使用synchronize关键字对方法加锁，确保任意时刻只有一个线程可执行该方法
     * 为确保安全性使用双重检索
     */
        public static LazySingleton3 getInstance(){
        //第一重判断
        if (instance == null){
            //锁定代码块
            synchronized (LazySingleton3.class){
                //第二重判断
                if (instance == null){
                    //创建单例实例
                    instance = new LazySingleton3();
                }
            }
        }
        return instance;
    }


}
